perm filename MCP3.AX[258,JMC] blob
sn#097408 filedate 1974-04-16 generic text, type T, neo UTF8
declare OPCONST outcome(PROGRAM,STATE) = STATE;
axiom progsem:
∀ s eta.(null(s) ⊃ outcome(s,eta)=eta),
∀ s eta.(isli(s) ⊃ outcome(s,eta) = a(ac,arg(s),eta)),
∀ s eta.(isload(s) ⊃ outcome(s,eta) = a(ac,cc(arg(s),eta),eta)),
∀ s eta.(issto(s) ⊃ outcome(s,eta) = a(arg(s),cc(ac,eta),eta)),
∀ s eta.(isadd(s) ⊃
outcome(s,eta) = a(ac,plus(cc(arg(s),eta),cc(ac,eta)),eta)),
∀ s eta.(¬null(s)∧¬null(rest(s)) ⊃
outcome(s,eta) = outcome(rest(s),outcome(first(s),eta)));;
declare OPCONST compile(EXPRESSION,NUMBER) = PROGRAM;
declare OPCONST map(EXPRESSION) = NUMBER;
axiom compile:
∀e t.(isconst(e) ⊃ compile(e,t) = mkli(val(e))),
∀e t.(isvar(e) ⊃ compile(e,t) = mkload(map(e))),
∀e t.(issum(e) ⊃ compile(e,t) = append(compile(s1(e),t),
append(mksto(t),append(compile(e,t+1),mkadd(t)))));;
declare OPCONST load(SOURCESTATE) = STATE;
axiom map:
∀e xi.(isvar(e) ⊃ cc(map(e),load(xi)) = c(e,xi));;
declare INDCONST t0 ε NUMBER;
axiom t0:
ac < t0,
∀e.map(e) < t0;;
axiom arith:
∀x.x < x+1,
∀x y.(x<y ⊃ ¬(x=y)),
∀x y z.(x<y ∧ y<z ⊃ x<z);;